package common;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


public class Cart {
	private String order_num;
	private String name;
	private String code;
	private String size;
	private int price;
	private int orders;
	private int num;
	private Customer cs;
	private List<OrderItem> items;
	private Date deli;		//java.utilだけど、sqlかもしれない
	private int judge;
	private int fee;
	private int price_total;
	private int cost_total;
	/**
	 * 
	 * @param cs 顧客オブジェクト
	 */
	public Cart(Customer  cs){
		this.cs = cs;
		//受注番号を採番管理から取得
		this.order_num = Number.getOrder();
		items = new ArrayList<OrderItem>();
	}
	
	/**
	 * 
	 * @param code 商品コード(7桁)
	 * @param orders 注文数
	 * @return ・追加した注文の行番号を返す。
	 */
	public int add(String code , int orders){
		OrderItem item = new OrderItem();
		//商品コードと注文数を受け取りカートに追加する。
		item.setItem_code(code);
		item.setOrders(orders);
		items.add(item);
		return items.size();
	}
	/**
	 * 
	 * @param num 受注明細の行番号
	 * @param orders 注文数
	 * @return 更新した注文の行番号を返す。
	 */
	public int update(int num , int orders){
		if(0 < num && num <= items.size()){
			//注文の行番号を受け取り、注文数量を設定する。
			OrderItem i = items.get(num-1);
			if(0 < orders){
				i.setOrders(orders);				
			}
			//注文数が範囲外(-1など)の場合は(-2)を返す。
			else{
				num = -2;
			}
		}
		//ただし、該当する行番号が登録されていない場合は(-1)を返す。
		else{
			num = -1;
		}
		return num;
	}
	/**
	 * 
	 * @param num 受注明細の行番号
	 */
	public void delete(int num){
		if(0 < num && num <= items.size()){
			//注文の行番号を受け取り、注文内容を削除する。
			//ただし、該当する行番号が登録されていない場合はなにもしない。
			items.remove(num-1);				
		}		
	}
	/**
	 * クリアメソッド
	 */
	public void clear(){
	//	注文内容をクリアする。
		items.clear();
	}
	

	public String getOrder_num() {
		return order_num;
	}

	public void setOrder_num(String order_num) {
		this.order_num = order_num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getSize() {
		return size;
	}

	public void setSize(String size) {
		this.size = size;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public int getOrders() {
		return orders;
	}

	public void setOrders(int orders) {
		this.orders = orders;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public Customer getCs() {
		return cs;
	}

	public void setCs(Customer cs) {
		this.cs = cs;
	}

	public List<OrderItem> getItems() {
		return items;
	}

	public void setItems(List<OrderItem> items) {
		this.items = items;
	}

	public Date getDeli() {
		return deli;
	}

	public void setDeli(Date deli) {
		this.deli = deli;
	}

	public int getJudge() {
		return judge;
	}

	public void setJudge(int judge) {
		this.judge = judge;
	}

	public int getFee() {
		return fee;
	}

	public void setFee(int fee) {
		this.fee = fee;
	}

	public int getPrice_total() {
		return price_total;
	}

	public void setPrice_total(int price_total) {
		this.price_total = price_total;
	}
	
	
	public int getCost_total() {
		return cost_total;
	}

	public void setCost_total(int cost_total) {
		this.cost_total = cost_total;
	}
}
